---------------------------------------------功能说明---------------------------------------------
--[[
@module  main
@summary LuatOS用户应用脚本文件入口，总体调度应用逻辑 
@version 1.0
@date    2025.08.07
@author  江访
@usage
本demo演示的核心功能为：
主入口模块
核心功能：
1. 定义项目名称和版本号
2. 初始化系统各功能模块
3. 启动用户界面系统
4. 管理整体应用生命周期
更多说明参考本目录下的readme.md文件
]]
---------------------------------------------模块结构---------------------------------------------
--[[
- main.lua                      --主函数，只负责require
  - ui_main.lua                 --用户界面主模块，负责UI相关的初始化，主循环
    - airlcd.lua                --显示屏初始化程序
    - AirFONTS_1000.lua         --高通矢量字体
]]
---------------------------------------------使用说明---------------------------------------------
--[[
1. 定义PROJECT和VERSION全局变量
2. 根据所接设备配置屏幕型号（ui_main），屏幕尺寸（airlcd），配置LCD供电引脚（airlcd）
3. 加载系统服务和用户界面
4. 调用sys.run()启动系统
]]
---------------------------------------------注意事项---------------------------------------------
--[[
必须定义PROJECT和VERSION变量，Luatools工具会用到这两个变量，远程升级功能也会用到这两个变量
PROJECT：项目名，ascii string类型
        可以随便定义，只要不使用,就行
VERSION：项目版本号，ascii string类型
        如果使用合宙iot.openluat.com进行远程升级，必须按照"XXX.YYY.ZZZ"三段格式定义：
            X、Y、Z各表示1位数字，三个X表示的数字可以相同，也可以不同，同理三个Y和三个Z表示的数字也是可以相同，可以不同
            因为历史原因，YYY这三位数字必须存在，但是没有任何用处，可以一直写为000
        如果不使用合宙iot.openluat.com进行远程升级，根据自己项目的需求，自定义格式即可
]]
---------------------------------------------相关代码---------------------------------------------
-- 项目定义(必须)
PROJECT = "AirFONTS_1000_demo"  -- 项目名称
VERSION = "1.0.0"       -- 项目版本

-- 在日志中打印项目名和项目版本号
log.info("main", PROJECT, VERSION)

-- log.style(2) --调试日志风格

-- 如果内核固件支持wdt看门狗功能，此处对看门狗进行初始化和定时喂狗处理
-- 如果脚本程序死循环卡死，就会无法及时喂狗，最终会自动重启
if wdt then
    --配置喂狗超时时间为9秒钟
    wdt.init(9000)
    --启动一个循环定时器，每隔3秒钟喂一次狗
    sys.timerLoopStart(wdt.feed, 3000)
end

-- 如果内核固件支持errDump功能，此处进行配置，【强烈建议打开此处的注释】
-- 因为此功能模块可以记录并且上传脚本在运行过程中出现的语法错误或者其他自定义的错误信息，可以初步分析一些设备运行异常的问题
-- 以下代码是最基本的用法，更复杂的用法可以详细阅读API说明文档
-- 启动errDump日志存储并且上传功能，600秒上传一次
-- if errDump then
--     errDump.config(true, 600)
-- end


-- 使用LuatOS开发的任何一个项目，都强烈建议使用远程升级FOTA功能
-- 可以使用合宙的iot.openluat.com平台进行远程升级
-- 也可以使用客户自己搭建的平台进行远程升级
-- 远程升级的详细用法，可以参考fota的demo进行使用


-- 启动一个循环定时器
-- 每隔3秒钟打印一次总内存，实时的已使用内存，历史最高的已使用内存情况
-- 方便分析内存使用是否有异常
-- sys.timerLoopStart(function()
--     log.info("mem.lua", rtos.meminfo())
--     log.info("mem.sys", rtos.meminfo("sys"))
-- end, 3000)

-- 加载用户界面主模块
require "ui_main"


-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后不要加任何语句!!!!!因为添加的任何语句都不会被执行